//给你一个字符串 s，找到 s 中最长的回文子串。 
//
// 
//
// 示例 1： 
//
// 
//输入：s = "babad"
//输出："bab"
//解释："aba" 同样是符合题意的答案。
// 
//
// 示例 2： 
//
// 
//输入：s = "cbbd"
//输出："bb"
// 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length <= 1000 
// s 仅由数字和英文字母组成 
// 
// Related Topics 字符串 动态规划 
// 👍 5670 👎 0

package leetcode.editor.cn;
/**
 * [5]最长回文子串
 */
public class LongestPalindromicSubstring {
    public static void main(String[] args) {
        Solution solution = new LongestPalindromicSubstring().new Solution();
        String palindromicSubstring = solution.longestPalindrome("aacabdkacaa");
        System.out.println(palindromicSubstring);
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String longestPalindrome(String s) {
        char[] letters = s.toCharArray();
        int max = 0;
        int pre=0, last = 0;
        int first=0, second = 0;
        for (int i = 0; i < letters.length; i++) {
            for (int j = letters.length-1; j > i; j--) {
                pre = i;
                last = j;
                for (; pre < last; pre++, last--) {
                    if (letters[pre] != letters[last]) {
                        break;
                    }
                }
                if (pre >= last) {
                    if (max < j - i + 1) {
                        max = j - i + 1;
                        first = i;
                        second = j;
                    }
                    max = Math.max(max, last - pre + 1);
                }
            }
        }
        return s.substring(first, second+1);
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}